package cn.tedu.csmall.product.service;

import cn.tedu.csmall.product.pojo.param.AlbumAddNewParam;
import cn.tedu.csmall.product.pojo.param.AlbumUpdateInfoParam;
import cn.tedu.csmall.product.pojo.vo.AlbumListItemVO;
import cn.tedu.csmall.product.pojo.vo.AlbumStandardVO;
import cn.tedu.csmall.commons.pojo.vo.PageData;
import cn.tedu.csmall.product.pojo.vo.PictureStandardVO;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public interface IAlbumService {

    /**
     * 添加相册
     * @param albumAddNewParam 新的相册数据
     */
    void addNew(AlbumAddNewParam albumAddNewParam);

    /**
     * 根据ID删除相册
     * @param id  相册id
     */
    void delete(Long id);

    /**
     * 修改相册数据
     * @param id 相册id
     * @param albumUpdateInfoParam 更新的相册数据
     */
    void updateInfoById(Long id, AlbumUpdateInfoParam albumUpdateInfoParam);

    /**
     * 根据ID查询相册详情
     */
    AlbumStandardVO getAlbumStandardById(Long id);

    /**
     * 查询相册数据列表，将使用默认的每页记录数
     *
     * @param pageNum 页码
     * @return 相册数据列表
     */
    PageData<AlbumListItemVO> list(Integer pageNum);

    /**
     * 查询相册数据列表
     *
     * @param pageNum  页码
     * @param pageSize 每页记录数
     * @return 相册数据列表
     */
    PageData<AlbumListItemVO> list(Integer pageNum, Integer pageSize);

    /**
     *根据相册id查询图片列表
     * @param albumId   相册id
     * @param pageNo    页码
     * @param pageSize  每页数据量
     * @return          转换后的页数据，含有图片列表的list
     */
    PageData<PictureStandardVO> listByAlbumId(Long albumId, Integer pageNo, Integer pageSize);

}
